/*
 * procedimiento.java
 *
 * Created on 18/06/2014, 10:12:05 AM
 * Copyright RVGRFD85
 */
package visit;

import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.jsfcl.data.SelectInputDateBean;
import com.icesoft.faces.context.effects.JavascriptContext;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
import javax.faces.FacesException;
import javax.faces.context.FacesContext;

import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import listas.listaProcedimientos;
import listas.parametros;
import pojos.CatLugares;
import pojos.CatVisitadores;
import pojos.Oficios;
import pojos.ProQuejosos;
import pojos.Procedimientos;
import pojos.ProInfractores;
import pojos.Resoluciones;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 */
public class procedimiento extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private int __placeholder;

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model() {
        return dataTable1Model;
    }

    public void setDataTable1Model(DefaultTableDataModel dtdm) {
        this.dataTable1Model = dtdm;
    }
    private PopupBean panelPopup1Bean = new PopupBean();

    public PopupBean getPanelPopup1Bean() {
        return panelPopup1Bean;
    }

    public void setPanelPopup1Bean(PopupBean pb) {
        this.panelPopup1Bean = pb;
    }
    //selector1******
    private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneMenu1Bean() {
        return selectOneMenu1Bean;
    }

    public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
        this.selectOneMenu1Bean = dsd;
    }

    private DefaultSelectionItems selectOneMenu1DefaultItems = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems() {
        return selectOneMenu1DefaultItems;
    }

    public void setSelectOneMenu1DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems = dsi;
    }

    ///selector1********
    private DefaultSelectedData selectOneMenu2Bean = new DefaultSelectedData();


    public DefaultSelectedData getSelectOneMenu2Bean() {
        return selectOneMenu2Bean;
    }

    public void setSelectOneMenu2Bean(DefaultSelectedData dsd) {
        this.selectOneMenu2Bean = dsd;
    }

    private DefaultSelectionItems selectOneMenu2DefaultItems = new DefaultSelectionItems();



    public DefaultSelectionItems getSelectOneMenu2DefaultItems() {
        return selectOneMenu2DefaultItems;
    }

    public void setSelectOneMenu2DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu2DefaultItems = dsi;
    }
    private DefaultTableDataModel dataTable2Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model() {
        return dataTable2Model;
    }

    public void setDataTable2Model(DefaultTableDataModel dtdm) {
        this.dataTable2Model = dtdm;
    }
    private DefaultTableDataModel dataTable2Model1 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model1() {
        return dataTable2Model1;
    }

    public void setDataTable2Model1(DefaultTableDataModel dtdm) {
        this.dataTable2Model1 = dtdm;
    }
    private DefaultTableDataModel dataTable2Model2 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model2() {
        return dataTable2Model2;
    }

    public void setDataTable2Model2(DefaultTableDataModel dtdm) {
        this.dataTable2Model2 = dtdm;
    }
    private PopupBean panelPopup2Bean = new PopupBean();
    private PopupBean panelPopup3Bean = new PopupBean();
    private PopupBean panelPopup4Bean = new PopupBean();
    private PopupBean panelPopup5Bean = new PopupBean();


    public PopupBean getPanelPopup2Bean() {
        return panelPopup2Bean;
    }

    public void setPanelPopup2Bean(PopupBean pb) {
        this.panelPopup2Bean = pb;
    }

    public PopupBean getPanelPopup3Bean() {
        return panelPopup3Bean;
    }

    public void setPanelPopup3Bean(PopupBean panelPopup3Bean) {
        this.panelPopup3Bean = panelPopup3Bean;
    }

    public PopupBean getPanelPopup4Bean() {
        return panelPopup4Bean;
    }

    public void setPanelPopup4Bean(PopupBean panelPopup4Bean) {
        this.panelPopup4Bean = panelPopup4Bean;
    }

    public PopupBean getPanelPopup5Bean() {
        return panelPopup5Bean;
    }

    public void setPanelPopup5Bean(PopupBean panelPopup5Bean) {
        this.panelPopup5Bean = panelPopup5Bean;
    }
    
    private DefaultSelectedData selectOneRadio1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneRadio1Bean() {
        return selectOneRadio1Bean;
    }

    public void setSelectOneRadio1Bean(DefaultSelectedData dsd) {
        this.selectOneRadio1Bean = dsd;
    }
    private DefaultSelectionItems selectOneRadio1DefaultItems = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneRadio1DefaultItems() {
        return selectOneRadio1DefaultItems;
    }

    public void setSelectOneRadio1DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneRadio1DefaultItems = dsi;
    }
    private PopupBean panelPopup5Bean1 = new PopupBean();

    public PopupBean getPanelPopup5Bean1() {
        return panelPopup5Bean1;
    }

    public void setPanelPopup5Bean1(PopupBean pb) {
        this.panelPopup5Bean1 = pb;
    }
    private PopupBean panelPopup6Bean = new PopupBean();

    public PopupBean getPanelPopup6Bean() {
        return panelPopup6Bean;
    }

    public void setPanelPopup6Bean(PopupBean pb) {
        this.panelPopup6Bean = pb;
    }
    private SelectInputDateBean selectInputDate2Bean = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDate2Bean() {
        return selectInputDate2Bean;
    }

    public void setSelectInputDate2Bean(SelectInputDateBean sidb) {
        this.selectInputDate2Bean = sidb;
    }
    


    // </editor-fold>

    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public procedimiento() {
    }
    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        cargarListaProcedimientos();
        cargarLugar();
        cargarVisitador();
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("procedimiento Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> paramMap = context.getExternalContext().getRequestParameterMap();

        if(paramMap.get("idOficio") != null){
            int procced = this.getSessionBean1().buscarOficioenProcedimientos(Integer.parseInt(paramMap.get("idOficio")));
            if(procced>0){
                this.getSessionBean1().crearSesion();
                this.getSessionBean1().sesion.load(unProced, procced);
                this.getSessionBean1().sesion.flush();
                this.infractoresTmp.clear();
                this.quejososTmp.clear();
                try {
                    Set proi;
                    proi= unProced.getProInfractoreses();
                    for (Iterator iterator =  proi.iterator(); iterator.hasNext();){
                        ProInfractores inf = (ProInfractores) iterator.next();
                        if(!inf.getDeleted()){
                            this.infractoresTmp.add(inf);
                        }
                    }
                    Set proq;
                    proq= unProced.getProQuejososes();
                    for (Iterator iterator =  proq.iterator(); iterator.hasNext();){
                        ProQuejosos quej = (ProQuejosos) iterator.next();
                        if(!quej.getDeleted()){
                            this.quejososTmp.add(quej);
                        }
                    }
                    fullResol(this.getUnProced());
                }catch (Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
                }
                this.setVentanaDetail(true);
            }else{
                this.getUnProced().setOrigen(paramMap.get("of"));
                this.getUnProced().setId_oficio(Integer.parseInt(paramMap.get("idOficio")));
                this.setVentanaNuevo(true);
            }
        }
        if(paramMap.get("idInvestigacion") != null){
            int procced = this.getSessionBean1().buscarInvestigacionEnProcedimientos(Integer.parseInt(paramMap.get("idInvestigacion")));
            if(procced>0){
                this.getSessionBean1().crearSesion();
                this.getSessionBean1().sesion.load(unProced, procced);
                this.getSessionBean1().sesion.flush();
                this.infractoresTmp.clear();
                this.quejososTmp.clear();
                try {
                    Set proi;
                    proi= unProced.getProInfractoreses();
                    for (Iterator iterator =  proi.iterator(); iterator.hasNext();){
                        ProInfractores inf = (ProInfractores) iterator.next();
                        if(!inf.getDeleted()){
                            this.infractoresTmp.add(inf);
                        }
                    }
                    Set proq;
                    proq= unProced.getProQuejososes();
                    for (Iterator iterator =  proq.iterator(); iterator.hasNext();){
                        ProQuejosos quej = (ProQuejosos) iterator.next();
                        if(!quej.getDeleted()){
                            this.quejososTmp.add(quej);
                        }
                    }
                    fullResol(this.getUnProced());
                }catch (Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
                }
                this.setVentanaDetail(true);
            }else{
                this.getUnProced().setOrigen(paramMap.get("in"));
                this.getUnProced().setId_investigacion(Integer.parseInt(paramMap.get("idInvestigacion")));
                this.setVentanaNuevo(true);
            }
        }
        //}
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }
    public Integer idOficio=0;
    public Integer idInvestigacion=0;
    public Integer getIdOficio() {
        return idOficio;
    }
    public void setIdOficio(Integer idOficio) {
        this.idOficio = idOficio;
    }
    public Integer getIdInvestigacion() {
        return idInvestigacion;
    }
    public void setIdInvestigacion(Integer idInvestigacion) {
        this.idInvestigacion = idInvestigacion;
    }
     /******************************FUNCIONES ESPECIFICAS GLOBALES********/
    private int RegresaSeleccionadoTablaPrincipal(FacesContext contexto, ActionEvent ae) {
        int numero=-1;
        String[] temp;
        try{
            String clientId=ae.getComponent().getClientId(contexto);
            //this.setMsg("fila -->"+ clientId.toString());
            this.getSessionBean1().mostrarMensajeError("Fila ",  clientId.toString());
            temp=clientId.toString().split(":");
            //"form1:datatable2:0:comandlink1"
            numero=Integer.parseInt(temp[2]);
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
        }
        return numero;
    }
    /******************************FUNCIONES ESPECIFICAS GLOBALES********/

    public void cargarVisitador(){
                this.getSelectOneMenu1DefaultItems().clear();
                List <CatVisitadores> catalogo=new ArrayList<CatVisitadores>();
                try{
                    catalogo=this.getSessionBean1().getCatalogoDeVisitadores();
                    if(catalogo.size()>0){
                        Iterator iterador=catalogo.iterator();
                        if(catalogo.iterator().hasNext()){
                            CatVisitadores as;
                            while(iterador.hasNext()){
                                as=(CatVisitadores)iterador.next();
                                this.getSelectOneMenu1DefaultItems().add(new SelectItem(as.getId(),as.getVisitador()));
                            }
                        }
                    }
                }catch(Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
                }
    }

    public void cargarLugar(){
                this.getSelectOneMenu2DefaultItems().clear();
                List <CatLugares> catalogo=new ArrayList<CatLugares>();
                try{
                    catalogo=this.getSessionBean1().getCatalogoDeLugares();
                    if(catalogo.size()>0){
                        Iterator iterador=catalogo.iterator();
                        if(catalogo.iterator().hasNext()){
                            CatLugares as;
                            while(iterador.hasNext()){
                                as=(CatLugares)iterador.next();
                                this.getSelectOneMenu2DefaultItems().add(new SelectItem(as.getId(),as.getLugar()));
                            }
                        }
                    }
                }catch(Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
                }
    }
//
//
//
//
//    //***
//    private procedimiento procedimiento = new procedimiento();
    private ProQuejosos proQuejoso = new ProQuejosos();
    private ProInfractores proInfractor = new ProInfractores();

    public ProInfractores getProInfractor() {
        return proInfractor;
    }

    public void setProInfractor(ProInfractores proInfractor) {
        this.proInfractor = proInfractor;
    }

    public ProQuejosos getProQuejoso() {
        return proQuejoso;
    }

    public void setProQuejoso(ProQuejosos proQuejoso) {
        this.proQuejoso = proQuejoso;
    }

    private List<ProQuejosos> quejososTmp = new ArrayList<ProQuejosos>();
    private List<ProInfractores> infractoresTmp = new ArrayList<ProInfractores>();

    public List<ProInfractores> getInfractoresTmp() {
        return infractoresTmp;
    }

    public void setInfractoresTmp(List<ProInfractores> infractoresTmp) {
        this.infractoresTmp = infractoresTmp;
    }

    public List<ProQuejosos> getQuejososTmp() {
        return quejososTmp;
    }

    public void setQuejososTmp(List<ProQuejosos> quejososTmp) {
        this.quejososTmp = quejososTmp;
    }


    private Procedimientos unProced= new Procedimientos();
    private Oficios unOficioSinModif= new Oficios();
    private int lugarInt=0;
    private int visitadorInt=0;
    public String TituloFecha;
    private TimeZone timeZone;
    private boolean ventanaNuevo= false;
    private boolean ventanaEdit= false;
    private boolean ventanaDetail= false;
    public Procedimientos getUnProced() {
        return unProced;
    }
    public void setUnProced(Procedimientos unProced) {
        this.unProced = unProced;
    }
    public Oficios getUnOficioSinModif() {
        return unOficioSinModif;
    }
    public void setUnOficioSinModif(Oficios unOficioSinModif) {
        this.unOficioSinModif = unOficioSinModif;
    }
    public int getVisitadorInt() {
        return visitadorInt;
    }
    public void setVisitadorInt(int visitadorInt) {
        this.visitadorInt = visitadorInt;
    }

    public int getLugarInt() {
        return lugarInt;
    }
    public void setLugarInt(int lugarInt) {
        this.lugarInt = lugarInt;
    }

    public String getTituloFecha() {
        return TituloFecha;
    }
    public void setTituloFecha(String TituloFecha) {
        this.TituloFecha = TituloFecha;
    }

    public TimeZone getTimeZone() {
        this.timeZone = TimeZone.getDefault();
        return timeZone;
    }
    public void setTimeZone(TimeZone timeZone) {
        this.timeZone = timeZone;
    }

    public boolean isVentanaNuevo() {
        return ventanaNuevo;
    }
    public void setVentanaNuevo(boolean ventanaNuevo) {
        this.ventanaNuevo = ventanaNuevo;
    }
    public boolean isVentanaDetail() {
        return ventanaDetail;
    }
    public void setVentanaDetail(boolean ventanaDetail) {
        this.ventanaDetail = ventanaDetail;
    }
    public boolean isVentanaEdit() {
        return ventanaEdit;
    }
    public void setVentanaEdit(boolean ventanaEdit) {
        this.ventanaEdit = ventanaEdit;
    }
    public String button5_action() {
         //this.getUnProced().setObservaciones(TituloFecha);
        if(this.getUnProced().getOficio().equalsIgnoreCase("")){
            this.getSessionBean1().mostrarMensajeAlert("Atención","No. de Procedimiento Necesario");
            return null;
        }
        try{
            int response=getSessionBean1().addProcedAdd(this.getUnProced(), this.getVisitadorInt(),this.getLugarInt());
            if(response == -1){
                this.getSessionBean1().mostrarMensajeAlert("Atención", "Complete la información");
            }else{
                this.getUnProced().setId(response);
                for (int i = 0; i < quejososTmp.size() ; i++) {
                    this.setProQuejoso(this.quejososTmp.get(i));
                    this.getProQuejoso().setProcedimientos(this.getUnProced());
                    ProQuejosos proQ = this.getSessionBean1().addProQuejososAdd(this.getProQuejoso());
                }
                for (int t = 0; t < infractoresTmp.size() ; t++) {
                    this.setProInfractor(this.infractoresTmp.get(t));
                    this.getProInfractor().setProcedimientos(this.getUnProced());
                    ProInfractores proI = this.getSessionBean1().addProInfractorAdd(this.getProInfractor());
                }
            }
            cargarListaProcedimientos();
            this.setVentanaNuevo(false);
        }catch(Exception e ){
            this.getSessionBean1().mostrarMensajeError("Error","Ha ocurrido un problema al intentar guardar la información");
        }
             JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "document.getElementById('form2:button10').focus();");
        return null;
    }
    public String btnclose1_action() {
        this.getSessionBean1().setVentanaAlert(false);
        return null;
    }
    public String button10_action() {
        this.getSessionBean1().setVentanaAlert(false);
        return null;
    }
    public String button1_action() {
        this.setVentanaNuevo(true);
        Date now = new Date();
        unProced.setFechaIni(now);
        this.getQuejososTmp().clear();
        this.getInfractoresTmp().clear();
        this.getUnProced().setId(0);
        this.getUnProced().setOrigen("");
        this.getUnProced().setOficio("");
        this.getUnProced().setObservaciones("");
        this.getUnProced().setIregularidadObs("");
        this.getProQuejoso().setNombre("");
        this.getProQuejoso().setPaterno("");
        this.getProQuejoso().setMaterno("");
        this.getProQuejoso().setCargo("");
        this.getProInfractor().setNombre("");
        this.getProInfractor().setPaterno("");
        this.getProInfractor().setMaterno("");
        this.getProInfractor().setCargo("");
        return null;
    }

     public String button7_action() {
        //return null means stay on the same page
        this.setVentanaNuevo(false);
        return null;
    }
    public String button_9_action() {
        //return null means stay on the same page
        this.setVentanaNuevo(false);
        return null;
    }
    private int editandoO=-1;
    private int editandoI=-1;
    public int getEditandoO() {
        return editandoO;
    }
    public void setEditandoO(int editandoO) {
        this.editandoO = editandoO;
    }
    public int getEditandoI() {
        return editandoI;
    }
    public void setEditandoI(int editandoI) {
        this.editandoI = editandoI;
    }
    public String button30_action() {
        try{
            quejososTmp.add(new ProQuejosos(this.getProQuejoso()));
            if(this.getEditandoO()>=0){
                this.quejososTmp.remove(this.getEditandoO());
                this.setEditandoO(-1);
            }
            this.proQuejoso.setNombre("");
            this.proQuejoso.setPaterno("");
            this.proQuejoso.setMaterno("");
            this.proQuejoso.setCargo("");
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }
        return null;
    }
    public String button20_action() {
        try{
            infractoresTmp.add(new ProInfractores(this.getProInfractor()));
            if(this.getEditandoI()>=0){
                this.infractoresTmp.remove(this.getEditandoI());
                this.setEditandoI(-1);
            }
            this.proInfractor.setNombre("");
            this.proInfractor.setPaterno("");
            this.proInfractor.setMaterno("");
            this.proInfractor.setCargo("");
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }
        return null;
    }
    public void commandLink1_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.quejososTmp.remove(numero);
    }
    public void commandLink2_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setProQuejoso(this.quejososTmp.get(numero));
        this.setEditandoO(numero);
        this.quejososTmp.get(numero).setDeleted(true);
    }
    public void commandLink03_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.infractoresTmp.remove(numero);
    }
    public void commandLink04_processAction(ActionEvent ae) {
         FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.infractoresTmp.remove(numero);
        this.setEditandoI(numero);
        this.infractoresTmp.get(numero).setDeleted(true);
    }
    public void commandLink5_processAction(ActionEvent ae) {
        //quitar quejosos
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        boolean res=this.getSessionBean1().deleteGeneral(this.quejososTmp.get(numero).getId(),"quejoso");
        this.quejososTmp.remove(numero);
    }
    public void commandLink6_processAction(ActionEvent ae) {
        //editar quejosos
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setProQuejoso(this.quejososTmp.get(numero));
        this.setEditandoO(numero);
        this.quejososTmp.get(numero).setDeleted(true);
    }
    public void commandLink7_processAction(ActionEvent ae) {
        //quitar infractores
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        boolean res=this.getSessionBean1().deleteGeneral(this.infractoresTmp.get(numero).getId(),"infractor");
        this.infractoresTmp.remove(numero);
    }
    public void commandLink8_processAction(ActionEvent ae) {
        //editar infractores
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setProInfractor(this.infractoresTmp.get(numero));
        this.setEditandoI(numero);
        this.infractoresTmp.get(numero).setDeleted(true);
    }
    //infractor
    public void commandLink4_processAction(ActionEvent ae) {

        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.getSessionBean1().crearSesion();
        this.getSessionBean1().sesion.clear();
        this.getSessionBean1().sesion.load(unProced, this.listaPrinPreocedimientosFiltro.get(numero).getId());
        this.infractoresTmp.clear();
        this.quejososTmp.clear();
        //this.getSessionBean1().mostrarMensajeAlert("comando editar", "id"+ this.listaPrinPreocedimientosFiltro.get(numero).getId());
        try {
            Set proi;
            proi= unProced.getProInfractoreses();
            for (Iterator iterator =  proi.iterator(); iterator.hasNext();){
                ProInfractores inf = (ProInfractores) iterator.next();
                if(!inf.getDeleted()){
                    this.infractoresTmp.add(inf);
                }
            }
            Set proq;
            proq= unProced.getProQuejososes();
            for (Iterator iterator =  proq.iterator(); iterator.hasNext();){
                ProQuejosos quej = (ProQuejosos) iterator.next();
                if(!quej.getDeleted()){
                    this.quejososTmp.add(quej);
                }
            }
            fullResol(this.getUnProced());
        }catch (Exception e){
            this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
        }
        this.setVentanaDetail(true);
    }
    public void commandLink3_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setEditandoO(numero);
        //Procedimientos p1= new Procedimientos();
        this.getSessionBean1().crearSesion();
        this.getSessionBean1().sesion.clear();
        this.getSessionBean1().sesion.load(unProced, this.listaPrinPreocedimientosFiltro.get(numero).getId());
        
       // this.setUnProced(p1);
        //this.setUnProced();
        this.infractoresTmp.clear();
        this.quejososTmp.clear();
        //this.getSessionBean1().mostrarMensajeAlert("comando editar", "id"+ this.listaPrinPreocedimientosFiltro.get(numero).getId());
        try {
            Set proi;
            proi= unProced.getProInfractoreses();
            for (Iterator iterator =  proi.iterator(); iterator.hasNext();){
                ProInfractores inf = (ProInfractores) iterator.next();
                if(!inf.getDeleted()){
                    this.infractoresTmp.add(inf);
                }
            }
            Set proq;
            proq= unProced.getProQuejososes();
            for (Iterator iterator =  proq.iterator(); iterator.hasNext();){
                ProQuejosos quej = (ProQuejosos) iterator.next();
                if(!quej.getDeleted()){
                    this.quejososTmp.add(quej);
                }
            }
            this.getProQuejoso().setNombre("");
            this.getProQuejoso().setPaterno("");
            this.getProQuejoso().setMaterno("");
            this.getProQuejoso().setCargo("");
            this.getProInfractor().setNombre("");
            this.getProInfractor().setPaterno("");
            this.getProInfractor().setMaterno("");
            this.getProInfractor().setCargo("");
        }catch (Exception e){
            this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
        }
        this.setVentanaEdit(true);
    }

    public void commandLink3a_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        if(this.listaPrinPreocedimientosFiltro.get(numero).getId_oficio()!=null){
            String url="";
            url+="correspondencia.jsp?idOficio="+this.listaPrinPreocedimientosFiltro.get(numero).getId_oficio();
            JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.document.location.href='"+url+"';");
        }
        if(this.listaPrinPreocedimientosFiltro.get(numero).getId_investigacion()!=null){
            String url="";
            url+="investigacion.jsp?idInvestigacion="+this.listaPrinPreocedimientosFiltro.get(numero).getId_investigacion();
            JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.document.location.href='"+url+"';");
        }

        


    }
    private List<ProQuejosos> listaProQuejosos = new ArrayList<ProQuejosos>();
    private List<ProInfractores> listaProInfractores = new ArrayList<ProInfractores>();
    public List<ProQuejosos> getListaProQuejosos() {
        return listaProQuejosos;
    }
    public void setListaProQuejosos(List<ProQuejosos> listaProQuejosos) {
        this.listaProQuejosos = listaProQuejosos;
    }
    public List<ProInfractores> getListaProInfractores() {
        return listaProInfractores;
    }
    public void setListaProInfractores(List<ProInfractores> listaProInfractores) {
        this.listaProInfractores = listaProInfractores;
    }
    public void cargarListaProQuejosos(){
        this.setListaProQuejosos(this.getSessionBean1().llenarProQuejosos());
    }
    public void cargarListaProInfractores(){
        this.setListaProInfractores(this.getSessionBean1().llenarProInfractores());
    }

    public String button_1_action() {
        //return null means stay on the same page
        this.setVentanaDetail(false);
        return null;
    }
    private List<Procedimientos> listaPrinPreocedimientos = new ArrayList<Procedimientos>();
    private List<listaProcedimientos> listaPrinPreocedimientosFiltro= new ArrayList<listaProcedimientos>();
    public List<Procedimientos> getListaPrinPreocedimientos() {
        return listaPrinPreocedimientos;
    }
    public void setListaPrinPreocedimientos(List<Procedimientos> listaPrinPreocedimientos) {
        this.listaPrinPreocedimientos = listaPrinPreocedimientos;
    }
    private void cargarListaProcedimientos() {
        this.setListaPrinPreocedimientos(this.getSessionBean1().llenarListaProcedimientos());
    }
    public String paramSeacrh;
    public String getParamSeacrh() {
        return paramSeacrh;
    }
    public void setParamSeacrh(String paramSeacrh) {
        this.paramSeacrh = paramSeacrh;
    }
    private void cargarListaProcedimientosFiltro() {
        //int a=2;
        this.setListaPrinPreocedimientosFiltro(this.getSessionBean1().llenarListaProcedimientosFiltro(this.getParamSeacrh() , this.getSelectOneRadio1Bean().getSelectedObject().toString()));
    }

    public List<listaProcedimientos> getListaPrinPreocedimientosFiltro() {
        return listaPrinPreocedimientosFiltro;
    }

    public void setListaPrinPreocedimientosFiltro(List<listaProcedimientos> listaPrinPreocedimientosFiltro) {
        this.listaPrinPreocedimientosFiltro = listaPrinPreocedimientosFiltro;
    }
    public String button_5_action() {
        //return null means stay on the same page
        this.setVentanaEdit(false);
        return null;
    }

    public String button11_action() {
        //return null means stay on the same page
        this.setVentanaEdit(false);
        return null;
    }

    public String button9_action() {
        //return null means stay on the same page
        //this.getUnProced().setObservaciones(TituloFecha);
        if(this.getUnProced().getOficio().equalsIgnoreCase("")){
            this.getSessionBean1().mostrarMensajeAlert("Atención","No. de Procedimiento Necesario");
         return null;
        }
        try{
            int response=getSessionBean1().addProcedEdit(this.getUnProced(), this.getVisitadorInt(),this.getLugarInt());
            if(response == -1){
                this.getSessionBean1().mostrarMensajeAlert("Atención", "Complete la información");
            }else{
                this.getUnProced().setId(response);
                for (int i = 0; i < quejososTmp.size() ; i++) {
                    this.setProQuejoso(this.quejososTmp.get(i));
                    this.getProQuejoso().setProcedimientos(this.getUnProced());
                    ProQuejosos proQ = this.getSessionBean1().addProQuejososEdit(this.getProQuejoso());
                }
                for (int t = 0; t < infractoresTmp.size() ; t++) {
                    this.setProInfractor(this.infractoresTmp.get(t));
                    this.getProInfractor().setProcedimientos(this.getUnProced());
                    ProInfractores proI = this.getSessionBean1().addProInfractorEdit(this.getProInfractor());
                }
            }
            //this.proQuejoso=null;
            //this.proInfractor=null;
            //cargarListaProcedimientosFiltro();
            this.setVentanaEdit(false);
        }catch(Exception e ){
            this.getSessionBean1().mostrarMensajeError("Error","Ha ocurrido un problema al intentar guardar la información");
        }
             JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "document.getElementById('form2:button10').focus();");
             return null;
    }

    public String button3_action() {
        //return null means stay on the same page
        cargarListaProcedimientos();
        return "";
    }
    public parametros params= new parametros();

    public parametros getParams() {
        return params;
    }

    public void setParams(parametros params) {
        this.params = params;
    }

    public String button2_action() {

        try{

            if(this.getSessionBean1().llenarListaProcedimientosFiltro(this.getParamSeacrh(), this.getSelectOneRadio1Bean().getSelectedObject().toString()).isEmpty())
            {
                this.getSessionBean1().mostrarMensajeAlert("Error","No existe elemento buscado.");
            }else{
            this.setListaPrinPreocedimientosFiltro(this.getSessionBean1().llenarListaProcedimientosFiltro(this.getParamSeacrh(), this.getSelectOneRadio1Bean().getSelectedObject().toString()));
           // this.setListaInves(this.getSessionBean1().llenaInvesEntrada());
            }
        }
        catch(NullPointerException npe){
        this.getSessionBean1().mostrarMensajeAlert("Error","Seleccionar tipo de búsqueda.");
        }




        
        return null;
    }

    public String inputText3_action() {
        //return null means stay on the same page
        button2_action();
        return null;
    }

    public void button_4_processAction(ActionEvent ae) {
    }

    public void button_5_processAction(ActionEvent ae) {
    }

    public String inputText31_action() {
        //return null means stay on the same page
        return null;
    }

    public String button15_action() {
        //return null means stay on the same page
        this.setVentanaDetail(false);
        return null;
    }

    public String button14_action() {
        //return null means stay on the same page
        String url="";
        url+="reporteProced?idProced="+this.getUnProced().getId();
        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "openWindow('" + url + "','Reporte 1', '_');");
        return null;
    }
    public void salir() {
        this.getSessionBean1().cerrarSesion();
        FacesContext context = FacesContext.getCurrentInstance();
        JavascriptContext.addJavascriptCall(context, "setTimeout(\"window.location.href='Page1.jsp'\",1000);");
        //return null;
    }
    private Resoluciones unaResolucion= new Resoluciones();
    private List<Resoluciones> resolTmp = new ArrayList<Resoluciones>();
    public Resoluciones getUnaResolucion() {
        return unaResolucion;
    }
    public void setUnaResolucion(Resoluciones unaResolucion) {
        this.unaResolucion = unaResolucion;
    }
    public List<Resoluciones> getResolTmp() {
        return resolTmp;
    }
    public void setResolTmp(List<Resoluciones> resolTmp) {
        this.resolTmp = resolTmp;
    }
    public String button12_action() {
        //return null means stay on the same page //height: 43px; left: 336px; top: 48px; position: absolute; width: 43px
        this.getSessionBean1().mostrarMensajeError("Error", "Ha ocurrido un problema al realizar la actualización");
//        try{
//            if(this.getUnaResolucion().getObservaciones().equalsIgnoreCase("") && this.getUnaResolucion().getResolucion().equalsIgnoreCase("")){
//                this.getSessionBean1().mostrarMensajeAlert("Atencción","Completa la información");
//            }else{
////                if( this.getUnaMod().getFResolucion() == null){
////                    this.getSessionBean1().alertaMsg("Atencción","Completa la información");
////                }else{
//                    //this.getUnaResolucion().setAsuntos(this.getResAsunto());
//                    this.getUnaResolucion().setProcedimientos(this.getUnProced());
//                    int response=this.getSessionBean1().addResol(this.getUnaResolucion());
//                    fullResol(this.getUnProced());
//                    cleanResol();
//               // }
//                //this.getSessionBean1().alertaMsg("Exito","Se ha actualizado la infotmación");
//            }
//        }catch (Exception e){
//            this.getSessionBean1().mostrarMensajeError("Error", "Ha ocurrido un problema al realizar la actualización");
//        }
        //JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "document.getElementById('form2:button5').focus();");
        return null;
    }
    public void fullResol( Procedimientos proce ){
        try{
            this.setResolTmp(this.getSessionBean1().listaResol(proce));
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeError("Error", e.toString());
        }
    }
    public void cleanResol(){
        this.getUnaResolucion().setFecha(null);
        this.getUnaResolucion().setResolucion("");
        this.getUnaResolucion().setObservaciones("");
        this.getUnaResolucion().setId(0);
    }

    public String button12a_action() {
         //return null means stay on the same page
//        try{
//            this.getSessionBean1().mostrarMensajeAlert("Atencción", this.getUnaResolucion().getFecha().toString());
//       }catch (Exception e){
//            this.getSessionBean1().mostrarMensajeAlert("Error", "-->" +e.toString());
//       }
        try{
            if(this.getUnaResolucion().getObservaciones().equalsIgnoreCase("") || this.getUnaResolucion().getResolucion().equalsIgnoreCase("") || this.getUnaResolucion().getFecha()==null){
                this.getSessionBean1().mostrarMensajeAlert("Atencción","Completa la información");
            }else{
                    this.getUnaResolucion().setProcedimientos(this.getUnProced());
                    int response=this.getSessionBean1().addResol(this.getUnaResolucion());
                    fullResol(this.getUnProced());
                    cleanResol();
            }
        }catch (Exception e){
            this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un problema al realizar la actualización: " +e.toString());
        }
        return null;
    }
}

